package com.ruoyi.produce.process.planself.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.produce.base.mrp.domain.MRP;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.sql.Timestamp;
import java.util.List;

/**
 * 生产计划实体类
 * 对应数据库字段 produce_plan_self
 * @author lsy 2021.8.23
 * 修改：
 */
@Data
@NoArgsConstructor
public class ProducePlanSelfDomain {
    /**
     * 自产生产计划编号
     */
    @NotNull
    @ApiModelProperty(value = "自产生产计划编号", required = true)
    private String planSelfId;

    /**
     * 自产生产计划父级编号
     */
    @ApiModelProperty("自产生产计划父级编号")
    private String planSelfIdParent;

    /**
     * 关联销售编号
     */
    @ApiModelProperty("关联销售编号")
    private String saleOrderId;

    /**
     * 产品编号
     */
    @NotNull(message = "请添加产品")
    @ApiModelProperty(value = "产品编号",required = true)
    private String produceId;

    /**
     * 员工编号
     */
    @ApiModelProperty(value = "员工编号")
    private String staffId;

    /**
     * 完成状态
     * 0-未完成、1-已完成
     */
    @ApiModelProperty(value = "完成状态")
    private String completionStatus;

    /**
     * 计划完成数量
     */
    @ApiModelProperty(value = "计划完成数量")
    private Double planSelfNumber;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Timestamp createTime;

    /**
     * 开始时间
     */
    @ApiModelProperty("开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.sql.Timestamp startTime;
    /**
     * 预计完成时间
     */
    @ApiModelProperty("预计完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.sql.Timestamp predictedFinishingTime;

    /**
     * 结束时间
     */
    @ApiModelProperty(value = "结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Timestamp endTime;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;

    /**
     * 子级生成计划
     */
    private List<ProducePlanSelfDto> producePlanSelves;

    /**
     * 根据MRP类初始化自产生产计划
     * @param mrp
     */
    public ProducePlanSelfDomain(MRP mrp) {
        if (mrp.isType()){
            //销售驱动
            this.saleOrderId = mrp.getId();
//            this.producePlanType = "1";
            this.remark = "MRP运算：由销售计划驱动";
        }else {
            //生产计划驱动
            this.planSelfIdParent = mrp.getId();
//            this.producePlanType = "2";
            this.remark = "MRP运算：由生产计划驱动";
        }
        this.produceId = mrp.getProduceId();
        this.planSelfNumber = mrp.getDemandNum();
    }
}
